<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <script>
      /*
      最长公共子序列
      ①：dp[i][j]表示以nums[i-1]为下标的字符串text1和以nums[j-1]为下标的text2的最长公共子序列的长度为dp[i][j]
      ②:状态转移方程：
      if(nums[i-1]==nums[j-1]) dp[i][j]=dp[i-1][j-1]+1
      else  那么继续比较(0,i-2)和(0,j-1)或者是(0,i-1)和(0,j-2)的最长公共子序列
      dp[i][j]=Math.max(dp[i-1][j],dp[i][j-1])

      */
      var longestCommonSubsequence = function (text1, text2) {
        let dp = new Array(text1.length + 1).fill().map(() => new Array(text2.length + 1).fill(0))
        for (let i = 1; i <= text1.length; i++) {
          for (let j = 1; j <= text2.length; j++) {
            if (text1[i - 1] == text2[j - 1]) {
              dp[i][j] = dp[i - 1][j - 1] + 1
            } else {
              dp[i][j] = Math.max(dp[i - 1][j], dp[i][j - 1])
            }
          }
        }
        console.log(dp)
        return dp[text1.length][text2.length]
      }
      longestCommonSubsequence('abcde', 'ace')
    </script>
  </body>
</html>
